package com.example.myweb.Domain.Entity;


import com.example.myweb.Domain.Entity.User;
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@Converter(autoApply = true) // autoApply=true 会自动应用到所有 UserStatus 类型的字段
public class UserStatusConverter implements AttributeConverter<User.UserStatus, String> {

    @Override
    public String convertToDatabaseColumn(User.UserStatus attribute) {
        // 当保存到数据库时，将枚举转换为小写字符串
        if (attribute == null) {
            return null;
        }
        return attribute.name().toLowerCase();
    }

    @Override
    public User.UserStatus convertToEntityAttribute(String dbData) {
        // 当从数据库读取时，将字符串（无论大小写）转换为枚举
        if (dbData == null) {
            return null;
        }
        try {
            return User.UserStatus.valueOf(dbData.toUpperCase());
        } catch (IllegalArgumentException e) {
            // 如果数据库中的值无效，可以返回一个默认值或抛出异常
            throw new IllegalArgumentException("Unknown value for UserStatus: " + dbData);
        }
    }
}
